/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package edu.ieslaferreria.creditsintesis.builders.Swing;

import edu.ieslaferreria.creditsintesis.rmi.Client;
import edu.ieslaferreria.creditsintesis.rmi.Pont;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import javax.swing.JPanel;

/**
 * @author Administrador
 * Clase de la cual van a extender todos los paneles que contiene un puente
 * para poder comunicarse via RMI,Los identificadores de los paneles,
 * y de otras opciones como aceptar, rechazar ect.
 *
 * A partir de esta base los demas paneles pueden modificar/complementar su comportamiento,
 * para obtener el resultado deseado.Todos los paneles no seran explicados , ya que sus comportamientos se explican en
 * el objectivo del juego, y el funcionamiento delos paneles a la hora de mandar o recibir informacion,
 *
 * es a traves de puentes/eventos/listeners asi que mirar estos comportamientos en las demas clases donde este explicado.
 */
public abstract class JPanelGame extends JPanel{
    public final static String  OPCIO_BASICA = "Seleccio";
    public final static String  CHAT = "Chat";
    public final static String  OK = "aceptar";
    public final static String  NO = "rechazar";
    public final static String  FUGIR = "fugir";
    public final static String  RESPOSTA_PROPOSICIO = "proposicio";
    private Pont pontPanel;
    private Client client;
    public static int A_REQUERIMENT = 0;
    private  static String A_R = "REQUERIMENT";
    public static int A_OFERIMENT = 1;
    private static String A_O = "OFERIMENT";
    public static int A_EXIGENCIA = 2;
    private static String A_E = "EXIGENCIA";
    public static int A_FUGIDA = 3;
    private static String A_f = "FUGIDA";
    public static int A_INTERCANVI = 4;
    private static String A_I ="INTERCANVI";
    public static int A_COMPETICIO = 5;
    private static String A_CM ="COMPETICIO";
    public static int A_COLABORACIO = 6;
    private static String A_CL ="COLABORACIO";
    public static int A_OFERIMENTRES = 7;
    private static String A_ORES = "OFERIMENTRES";
    public static int A_EXIGENCIARES = 8;
    private static String A_ERES = "EXIGENCIARES";
    public static int A_FUGIDARES = 9;
    private static String A_FRES = "FUGIDARES";
    public static int A_INTERCANVIRES = 10;
    private static String A_IRES ="INTERCANVIRES";
    public static int A_COMPETICIORES = 11;
    private static String A_CMRES ="COMPETICIORES";
    public static int A_COLABORACIORES = 12;
    private static String A_CLRES ="COLABORACIORES";
    public static int A_PACTE = 13;
    private static String A_P = "PACTE";
   public static int A_PANELINICI = 14;
    private static String A_INICI = "Panel de Inici";
    public static int A_PANELWAIT = 15;
    private static String A_W = "Panel de joc";
 public static int A_PANELMENUWAIT = 16;
    private static String A_MW = "Panel de espera altre player";



    private String [] CorrespondenciaPanels = {A_R,A_O,A_E,A_f,A_I,A_CM,A_CL,A_ORES,A_ERES,A_FRES,A_IRES,A_CMRES,A_CLRES,A_P,A_INICI,A_W};
    

public abstract void update(Map<String,List<String>>options, ArrayList<String> extras);


    public void updateOpPlayer2(Map<String, List<String>> opcions,ArrayList<String> extras) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

     /**
     * @return the pontPanel
     */
    public Pont getPontPanel() {
        return pontPanel;
    }

    /**
     * @param pontPanel the pontPanel to set
     */
    public void setPontPanel(Pont pontPanel) {
        this.pontPanel = pontPanel;
    }




    /**
     * @return the client
     */
    public Client getClient() {
        return client;
    }

    /**
     * @param client the client to set
     */
    public void setClient(Client client) {
        this.client = client;
    }

    public List<String> toList (String[] array){

        ArrayList<String> res = new ArrayList();

        for(int cont=0;cont<array.length;cont++){
        res.add(array[cont]);
        }
        return res;
    }
}

